#!/usr/bin/env python3
import os
from database.mysql_manager import db_manager

"""
MySQL订单数据初始化脚本
专门用于初始化或重新初始化订单数据
"""

def initialize_order_data():
    print("===== MySQL订单数据初始化工具 =====")
    
    try:
        # 连接到数据库
        print("\n正在连接到MySQL数据库...")
        if not db_manager.connect():
            print("❌ 无法连接到数据库，请检查MySQL服务和配置")
            return False
        
        print("✅ 成功连接到数据库")
        
        # 初始化数据库（创建表结构）
        print("\n正在初始化数据库表结构...")
        if db_manager.initialize_database():
            print("✅ 数据库表结构初始化成功")
        else:
            print("❌ 数据库表结构初始化失败")
            return False
        
        # 清除现有订单数据（可选）
        print("\n正在清除现有订单数据...")
        try:
            # 先删除订单项（避免外键约束问题）
            db_manager.execute_update("DELETE FROM order_items;")
            # 再删除订单
            db_manager.execute_update("DELETE FROM orders;")
            print("✅ 现有订单数据已清除")
        except Exception as e:
            print(f"⚠️  清除现有数据时出错（可能是因为表为空）: {e}")
        
        # 插入初始订单数据
        print("\n正在插入初始订单数据...")
        if db_manager.insert_initial_data():
            print("✅ 初始订单数据插入成功")
        else:
            print("❌ 初始订单数据插入失败")
            return False
        
        # 验证数据是否插入成功
        print("\n正在验证数据插入结果...")
        order_count = db_manager.execute_query("SELECT COUNT(*) as count FROM orders;")
        item_count = db_manager.execute_query("SELECT COUNT(*) as count FROM order_items;")
        
        if order_count and item_count:
            print(f"✅ 成功插入了 {order_count[0]['count']} 个订单和 {item_count[0]['count']} 个订单项")
        
        # 查询一些订单数据进行展示
        sample_orders = db_manager.execute_query("""
            SELECT id, order_no, customer_name, total_amount, status
            FROM orders
            LIMIT 3
        """)
        
        if sample_orders:
            print("\n已插入的订单数据示例:")
            for order in sample_orders:
                print(f"- 订单号: {order['order_no']}, 客户: {order['customer_name']}, \
                  总金额: ¥{order['total_amount']:.2f}, 状态: {order['status']}")
        
        # 关闭连接
        db_manager.disconnect()
        print("\n✅ MySQL订单数据初始化完成!")
        return True
        
    except Exception as e:
        print(f"❌ 初始化过程中发生错误: {e}")
        db_manager.disconnect()
        return False

def main():
    print("MySQL订单数据初始化工具")
    print("======================")
    
    # 运行初始化过程
    success = initialize_order_data()
    
    if success:
        print("\n恭喜！订单数据已成功初始化。")
        print("你现在可以重启服务并通过API访问这些订单数据。")
    else:
        print("\n初始化失败，请检查错误信息并修复问题后重试。")
        print("可能的原因:")
        print("1. MySQL服务未启动")
        print("2. .env文件中的MySQL配置不正确")
        print("3. MySQL用户没有足够的权限")
        print("4. 数据库连接超时或网络问题")

if __name__ == "__main__":
    main()